if(joinAreas(a, a)) {
++i;
}
if(joinAreas(b, b)) {
++i;
}
hadChanges = i > 0;
//join each area with itself, fixing self-crossings.
JoinAreasResult resultA = joinAreas(a, a);
JoinAreasResult resultB = joinAreas(b, b);
if (resultA.mergeSuccessful) {
a = resultA.outerWay;
++i;
}
if(resultB.mergeSuccessful) {
b = resultB.outerWay;
++i;
}